package com.jxwifi.cloud.quickcleanserver.app;

import android.content.Context;

import com.idroid.async.AsyncWorker;
import com.idroid.utils.ETag;
import com.jxwifi.cloud.quickcleanserver.bean.InfoBean;
import com.jxwifi.cloud.quickcleanserver.bean.PrefKey;
import com.jxwifi.cloud.quickcleanserver.okhttp.AuzHttp;

import org.simple.eventbus.EventBus;

import cn.trinea.android.common.util.PreferencesUtils;
import cn.trinea.android.common.util.StringUtils;

/**
 * 用户信息管理
 * Created by Administrator on 2019/5/18.
 */

public class AccountMgr extends PreferencesUtils {

    public Context mcontext;
    /**
     * 用户登陆成功时触发
     * @param context
     */
    public static void loginSuccess(final Context context) {
        AsyncWorker.execute(new Runnable() {
            @Override
            public void run() {
                ResetLogin(context, true);
            }
        });
    }

    /**
     * 是否登录
     * @param context
     * @return
     */
    public static boolean isLogin(Context context) {
        String mid = getCleanerCode(context);
        if (!StringUtils.isEmpty(mid)) {
            ResetLogin(context, true);
        }
        return getBoolean(context, Const.IsLogin);
    }

    /**
     * 重置当前登录状态
     */
    public static void ResetLogin(Context context, boolean isLogin) {
        if (!isLogin)
            putString(context, Const.CLEANER_CODE, null);
        putBoolean(context, Const.IsLogin, isLogin);
    }
    /**
     * 注销时的操作
     *
     * @param context
     */
    public static void logout(final Context context) {
        ResetLogin(context, false);
        AsyncWorker.execute(new Runnable() {
            @Override
            public void run() {
                //退出登录token清除，
                AuzHttp.KJB_APP_Token="";
                EventBus.getDefault().post(Boolean.valueOf(false), ETag.ETag_UserLogin);//登录发生改变的时候，如果那个页面的数据需要操作，可以调这个方法
                PreferencesUtils.putString(context, PrefKey.SelCarId, null);
                removeUser(context);
            }
        });
    }

    public static void putUser(Context context, InfoBean us,boolean IsPassword) {
        putString(context, Const.REAL_NAME, us.getRealName());
        putString(context, Const.HEADPIC, us.getHeadImg());
        putString(context, Const.ISAUTH, us.getIsAuth());
        putString(context, Const.ISFREEZE, us.getIsFreeze());
        putString(context, Const.CLEANER_CODE, us.getCleanerCode());
        putString(context, Const.CONTACT_NAME, us.getEmergencyContactName());
        putString(context, Const.CONTACT_TELL, us.getEmergencyContactTell());
        putString(context,Const.ACCEP_STATUS,us.getAcceptStatus());
        putInt(context, Const.GRADE, (int)us.getGrade());
        putString(context,Const.AMOUNT,us.getAmount());
        putInt(context,Const.ORDER_COUNTS,us.getOrderCounts());
        putString(context,Const.BIRTHDAY,us.getBirthday());
        putString(context,Const.SEX,us.getSex());
        if (IsPassword){//密码保存只在做登录操作的时候才保存，其他情况下不做保存
            putString(context,Const.PASSWORD,us.getPassword());
        }
        putString(context,Const.TELL,us.getTell());
        putString(context,Const.COMPANY_STATUS,us.getApplyCompanyStatus());
        putString(context,Const.TRAIN_STATUS,us.getApplyTrainStatus());
        putString(context,Const.SERVICE_CODE,us.getServiceCode());
        putString(context,Const.NOW_ADDRESS,us.getNowAddress());
        putString(context,Const.ID_CARD_NUM,us.getIdCardNum());
        putString(context,Const.ID_CARD_IMG_BACK,us.getIdCardImgBack());
        putString(context,Const.ID_CARD_IMG_FRONT,us.getIdCardImgFront());
    }

    public static void removeUser(Context context) {
        putString(context, Const.REAL_NAME, null);
        putString(context, Const.HEADPIC, null);
        putString(context, Const.ISAUTH, null);
        putString(context, Const.ISFREEZE, null);
        putString(context, Const.CLEANER_CODE, null);
        putString(context, Const.CONTACT_NAME, null);
        putString(context, Const.CONTACT_TELL, null);
        putString(context,Const.ACCEP_STATUS,null);
        putInt(context, Const.GRADE, 0);
        putString(context,Const.AMOUNT,null);
        putInt(context,Const.ORDER_COUNTS,0);
        putString(context,Const.BIRTHDAY,null);
        putString(context,Const.SEX,null);
        putString(context,Const.PASSWORD,null);
        putString(context,Const.TELL,null);
        putString(context,Const.COMPANY_STATUS,null);
        putString(context,Const.TRAIN_STATUS,null);
        putString(context,Const.SERVICE_CODE,null);
        putString(context,Const.NOW_ADDRESS,null);
        putString(context,Const.ID_CARD_NUM,null);
        putString(context,Const.ID_CARD_IMG_BACK,null);
        putString(context,Const.ID_CARD_IMG_FRONT,null);
    }

    //获取保洁员编号
    public static String getCleanerCode(Context context) {
        return getString(context, Const.CLEANER_CODE);
    }
    //获取保存中的时间字段
    public static String getTokenTime(Context context) {
        return getString(context, Const.TOKEN_TIME);
    }

    //保存时间字段
    public static void putTokenTime(Context context,String tokentime) {
        putString(context,Const.TOKEN_TIME,tokentime);
    }

    //获取头像地址
    public static String getheadpic(Context context) {
        return getString(context, Const.HEADPIC);
    }
    //修改后保存头像地址
    public static void putHeadpic(Context context,String headPic){
        putString(context,Const.HEADPIC,headPic);
    }

    //获取头像地址
    public static String getBirthday(Context context) {
        return getString(context, Const.BIRTHDAY);
    }
    //修改后保存头像地址
    public static void putBirthday(Context context,String birthday){
        putString(context,Const.BIRTHDAY,birthday);
    }

    //获取真实姓名
    public static String getrealName(Context context) {
        return getString(context, Const.REAL_NAME);
    }

    //是否认证
    public static String getIsAuth(Context context){
         return getString(context, Const.ISAUTH);
    }

    //获取保洁员编号
    public static String getcleanerCode(Context context) {
        return getString(context, Const.CLEANER_CODE);
    }

    //获取紧急联系人
    public static String getcontactName(Context context) {
        return getString(context, Const.CONTACT_NAME);
    }
    //修改紧急联系人
    public static void putcontactName(Context context,String contactname){
        putString(context,Const.CONTACT_NAME,contactname);
    }

    //紧急联系电话
    public static String getcontactTell(Context context) {
        return getString(context, Const.CONTACT_TELL);
    }
    //修改联系电话
    public static void putcontacttell(Context context,String contacttell){
        putString(context,Const.CONTACT_TELL,contacttell);
    }
    //获取性别
    public static String getsex(Context context) {
        return getString(context, Const.SEX);
    }
    //修改性别
    public static void putsex(Context context,String sex){
        putString(context,Const.SEX,sex);
    }

    //评分
    public static int getgrade(Context context) {
        return getInt(context, Const.GRADE);
    }

    //获取接单状态
    public static String getacceptStatus(Context context) {
        return getString(context, Const.ACCEP_STATUS);
    }
    //修改接单状态
    public static void putacceptStatus(Context context,String acceptStatus){
        putString(context,Const.ACCEP_STATUS,acceptStatus);
    }
    //余额
    public static String getamount(Context context) {
        return getString(context, Const.AMOUNT);
    }
    //订单数
    public static int getorderCounts(Context context) {
        return getInt(context, Const.ORDER_COUNTS);
    }

    //token
    public static String gettoken(Context context) {
        return getString(context, Const.TOKEN);
    }
    //token
    public static void puttoken(Context context,String token){
        putString(context,Const.TOKEN,token);
    }

    //电话
    public static String gettell(Context context) {
        return getString(context, Const.TELL);
    }
    //电话
    public static void puttell(Context context,String tell){
        putString(context,Const.TELL,tell);
    }

    //公司审核
    public static String getapplyCompanyStatus(Context context) {
        return getString(context, Const.COMPANY_STATUS);
    }
    //公司审核
    public static void putapplyCompanyStatus(Context context,String applyCompanyStatus){
        putString(context,Const.COMPANY_STATUS,applyCompanyStatus);
    }

    //公司审核
    public static String getapplyTrainStatus(Context context) {
        return getString(context, Const.TRAIN_STATUS);
    }
    //公司审核
    public static void putapplyTrainStatus(Context context,String applyTrainStatus){
        putString(context,Const.TRAIN_STATUS,applyTrainStatus);
    }

    //密码
    public static String getpassword(Context context) {
        return getString(context, Const.PASSWORD);
    }

    //获取上次保存的手机号
    public static String getLastName(Context context){
        return getString(context,Const.LAST_TIME_NAME);
    }

    //保存这次的手机号
    public static void putLastName(Context context,String lastname){
        putString(context,Const.LAST_TIME_NAME,lastname);
    }

    //获取渠道商编号
    public static String getServiceCode(Context context){
        return getString(context,Const.SERVICE_CODE);
    }

    //获取现住址
    public static String getNowAddress(Context context){
        return getString(context,Const.NOW_ADDRESS);
    }

    //获取身份证号
    public static String getIdCardNum(Context context){
        return getString(context,Const.ID_CARD_NUM);
    }

    //获取身份证反面
    public static String getIdCardImgBack(Context context){
        return getString(context,Const.ID_CARD_IMG_BACK);
    }
    //获取身份证正面
    public static String getIdCardImgFront(Context context){
        return getString(context,Const.ID_CARD_IMG_FRONT);
    }

    public static final class Const {

        //真实姓名
        public final static String REAL_NAME = "realName";
        //头像地址
        public final static String HEADPIC = "head_pic";
        //是否认证
        public final static String ISAUTH="isAuth";
        //是否冻结
        public final static String ISFREEZE="isFreeze";
        //保洁员编号
        public final static String CLEANER_CODE="cleanerCode";
        //紧急联系人
        public final static String CONTACT_NAME="emergencyContactName";
        //紧急联系电话
        public final static String CONTACT_TELL="emergencyContactTell";
        //评分
        public final static String GRADE="grade";
        //是否登录
        public final static String IsLogin = "IsLogin";
        //Token下次更新时间（获取手机本地时间，在本地时间的基础上多加2个小时(现在定义为2小时更新一次)）
        public final static String TOKEN_TIME="token_time";
        //接单状态
        public final static String ACCEP_STATUS="acceptStatus";
        //余额
        public final static String AMOUNT="amount";
        //订单数
        public final static String ORDER_COUNTS="orderCounts";
        //生日
        public final static String BIRTHDAY="birthday";
        //性别
        public final static String SEX="sex";
        //token
        public final static String TOKEN="token";
        //密码
        public final static String PASSWORD="password";
        //用户上次登录保存的手机号
        public final static String LAST_TIME_NAME="LastTimeName";
        //电话
        public final static String TELL="tell";
        //公司审核
        public final static String COMPANY_STATUS="applyCompanyStatus";
        //培训审核
        public final static String TRAIN_STATUS="applyTrainStatus";
        //渠道商编号
        public final static String SERVICE_CODE="serviceCode";
        //现住址
        public final static String NOW_ADDRESS="nowAddress";
        //身份证号
        public final static String ID_CARD_NUM="idCardNum";
        //身份证反面
        public final static String ID_CARD_IMG_BACK="idCardImgBack";
        //身份证正面
        public final static String ID_CARD_IMG_FRONT="idCardImgFront";

    }
}
